﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MobiShop.Models;
using System.Xml;

namespace MobiShop.Controllers
{
    public class AJAXController : Controller
    {
        //
        // Hoàng
        // trả về 0 nếu username ko trùng, 1 nếu trùng
        [HttpPost]
        public string UsernameExists(FormCollection form)
        {
            string username = form["username"];
            string kq = "0";
            if (username != null)
            {
                username = username.Trim();
                if (AccountModels.UsernameExists(username)) kq = "1";
            }
            return kq;
        }

        // Hoàng
        // trả về 0 nếu email ko trùng, 1 nếu trùng
        [HttpPost]
        public string EmailExists(FormCollection form)
        {
            string email = form["email"];
            string kq = "0";
            if (email != null)
            {
                email = email.Trim();
                if (AccountModels.EmailExists(email)) kq = "1";
            }
            return kq;
        }

        // Hoàng
        // trả về 1 nếu thao tác thay đổi giá trị visible thành công, 0 nếu thất bại
        // tham số nhận : OrderId
        [HttpPost]
        [MyAuthorize(MyRole = 2, RedirectURL = "/AJAX/ErrorMessage")]
        public string ChangeVisibleStatus(FormCollection form)
        {
            // System.Threading.Thread.Sleep(10000);
            string kq = "0";
            int OrderId;
            if(int.TryParse(form["OrderId"], out OrderId))
            {
                if (OrderModels.ChangeVisibleStatus(OrderId)) kq = "1";
            }
            return kq;
        }

        // Hoàng
        // trả về lỗi 404
        public ActionResult ErrorMessage()
        {
            return HttpNotFound();
        }

        // Hoàng
        // nếu thao tác thành công, trả về 1 chuỗi xml định dạng như sau: 
        //     <result receiveDate="1 March 2001 3:40:00 PM" />
        // trong đó, receiveDate có thể có hoặc ko
        // trường hợp thất bại, trả về chuỗi "0" => ko có nút xml result
        // tham số nhận : OrderId, orderStatusId ( orderStatusId = 0 tức là null)
        [HttpPost]
        [MyAuthorize(MyRole = 2, RedirectURL = "/AJAX/ErrorMessage")]
        public string ChangeOrderStatusId(FormCollection form)
        {
            string kq = "0";
            int OrderId, orderStatusId;
            if (int.TryParse(form["OrderId"], out OrderId) && int.TryParse(form["orderStatusId"], out orderStatusId))
            {
                bool dateChange;
                Order order = OrderModels.ChangeOrderStatusId(OrderId, orderStatusId, out dateChange);
                if (order != null)
                {
                    XmlDocument document = new XmlDocument();
                    XmlElement node = document.CreateElement("result");
                    if (dateChange)
                    {
                        string str = "";
                        if (order.receiveDate != null)
                            str = String.Format("{0:dd MMM yyyy HH:mm:ss}", order.receiveDate);
                        node.SetAttribute("receiveDate", str);
                    }
                    document.AppendChild(node);
                    kq = document.OuterXml;
                }
            }
            return kq;
        }
    }
}
